package com.example.mapper;
import com.example.pojo.Menu;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.vo.ResultVo;
import com.example.vo.respvo.MenuAuthenticationVo;
import com.example.vo.respvo.Option;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.NoArgsConstructor;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * <p>
 * 菜单表 Mapper 接口
 * </p>
 *
 * @author wsl
 * @since 2022-03-27
 */
@Mapper
@Repository
public interface MenuMapper extends BaseMapper<Menu> {

    List<Option> selectMenuOptions(@Param("parentId") Integer parentId);

    /**
     * 查询菜单path访问所需要的角色
     * @return
     */
    List<MenuAuthenticationVo> selectMenuAuthentication();

    /**
     * 查询访问指定菜单path需要的角色
     * @param menus
     * @return
     */
    List<String> selectMenusWithRole(@Param("menus") List<String> menus);

    /**
     * 查询所有菜单
     * @param menuName
     * @param enabled
     * @return
     */
    List<Menu> selectMenus(
            @Param("menuName") String menuName,
            @Param("enabled") Integer enabled);

//    /**
//     * 查询菜单的子集
//     * @param
//     * @return
//     */
//    List<Integer> selectChildrenById(@Param("id") int id);


    /**
     * 查询用户角色菜单
     * @param parentId
     * @return
     */
    List<Menu> selectUserRoleMenus(@Param("userId")String userId,@Param("parentId") Integer parentId);

    /**
     * 查询所有的用户权限菜单
     * @param parentId
     * @return
     */
    List<Menu> selectAllUserRoleMenus(@Param("parentId") Integer parentId);
}
